前言¶
本文档主要描述了WS53V100的客户预留EFUSE位域的使用方法。
与本文档对应的产品版本如下。
本文档主要适用于以下人员:
技术支持工程师
软件开发工程师
在本文中可能出现下列标志,它们所代表的含义如下。
概述¶
EFUSE是一种可编程的存储单元,由于其只可编程一次的特征,多用于芯片保存Chip ID、密钥或其他一次性存储数据。WS53提供了两种使用方式:通过软件驱动接口直接读写用户预留的128bit EFUSE空间;通过烧写工具操作整个2048bit空间。
软件编程接口使用指导¶
eFuse模块提供的接口及功能如下:
头文件路径: include\driver\efuse_user.h
uapi_efuse_user_read_bit:从用户预留的eFuse空间中读取一位。
uapi_efuse_user_read_buffer:从用户预留的eFuse空间中读取多个字节,进入提供的缓冲区。
uapi_efuse_user_write_bit:向用户预留eFuse空间中的对应bit写1。
uapi_efuse_user_write_buffer:从提供的缓冲区向用户预留的eFuse空间写入多个字节。
示例:
按照buffer写eFuse值。
uint8_t efuse_data[8] = {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88}; uint32_t byte_number = 1; uint16_t length = 8; uint32_t ret; // 第1Byte开始写入8个字节 ret = uapi_efuse_user_write_buffer(byte_number, efuse_data, length); if (ret != 0) { // 异常处理 }
按照buffer读取efuse值。
uint8_t efuse_data[8] = {0}; uint32_t byte_number = 1; uint16_t length = 8; uint32_t ret; // 第1byte开始读取8个字节 ret = uapi_efuse_user_read_buffer(byte_number, efuse_data, length); if (ret != 0) { // 异常处理 }
按照bit读取efuse值。
uint8_t bit_pos = 1; uint8_t value; uint32_t byte_number = 1; uint32_t ret; // 读取第一个byte的bit1的值,存入value中(0 or 1) ret = uapi_efuse_user_read_bit(byte_number, bit_pos, &value); if (ret != 0) { // 异常处理 }
按照bit写入efuse值。
uint8_t value; uint32_t byte_number = 1; uint32_t ret; // 向第一个byte的bit1写入1 ret = uapi_efuse_user_write_bit(byte_number, bit_pos); if (ret != 0) { // 异常处理 }
Burntool烧写efuse_cfg.bin说明¶
生成efuse_cfg.bin¶
数据准备

字段说明:
burn:
0:当前位域不烧写,
1:当前位域烧写
name:当前efuse位域名字
start_bit:位域起始bit位
bit_width:当前位域bit长度
values:烧写值
lock:锁定位
示例:
0,CHIP_ID,0,8,0x00000000,PG0:chip_id 从bit0开始,长度是8bit,不烧写。
1,SEC_BOOT,226,8,0x00000042,PG39:SEC_BOOT从bit226开始,长度为8bit,烧写值为0x42。
烧写文件生成
编译loaderboot,会生成efuse_cfg.bin。
编译对应的app.bin,编译成功后,会将efuse_cfg.bin自动打包到app.bin中。
烧录流程¶
准备烧写工具“BurnTool”通过BurnTool工具烧写镜像。具体步骤如下:
在BurnTool界面中,单击“Option”按钮,选择“Change chip”,从“Chip List”下拉菜单中选择“WS53”,并单击“OK”即可,如图1所示。
在BurnTool界面中,单击“COM”按钮选择PC机串口(串口选择,请参考开发板使用指南);单击“Select file”按钮,选择各产品编译生成的固件包,并单击“OK”,如图2所示。efuse_cfg.bin为待烧录数据,烧录类型为3。
勾选“Auto burn”以及“Auto disconnect”选项;
选择“Setting”→“Settings”,配置串口参数,默认配置如图3所示,baud配置为2000000,package size配置为8192。
说明:
Force Read Time:定时读取的时间,以毫秒为单位。勾选时为定时读取串口,不勾选时为事件触发读取串口。适用于不勾选该选项无法正常烧录的场景。选择目标串口号并单击“Connect”按钮(单击后“Connect”变为“Disconnect”),复位单板。自动烧录效果如图4所示。
等待传输完成后结束烧写,烧写完成会出现“All images burn successfully”。烧写完成效果如图5所示。
说明:
在速率不理想的外部状态下,若多次出现烧写镜像失败的情况,请拷贝至本地烧写









